#ifndef DOZERG_LOGGER_H_20071226
#define DOZERG_LOGGER_H_20071226

#include <../common/logger.hpp>

#define INIT_LOGGER(filename)            LOG_CONFIG(filename)
#define LOCAL_LOGGER(logger,header)
//#define LOCAL_LOGGER_FUN(logger)

//defines for convenience use
#undef TRACE
#define TRACE(msg)  LOG(TRACE,msg)
#define DEBUG(msg)  LOG(DEBUG,msg)
#define INFO(msg)   LOG(INFO,msg)
#define WARN(msg)   LOG(WARN,msg)
#define ERROR(msg)  LOG(ERROR,msg)
#define FATAL(msg)  LOG(FATAL,msg)

#ifdef NDEBUG
#   define ASSERT(expr,msg)
#   define __COUT(msg)
#else
#	include <iostream>
#	define ASSERT(expr,msg) do {					\
		if(!(expr)) {						\
			ERROR(msg<<" - "<<#expr);			\
			std::cerr<<msg<<" - "<<#expr<<std::endl;	\
			abort();					\
		}							\
	} while(false)

#   define __COUT(msg)          std::cerr<<msg<<std::endl
#endif

#define ERROR_COUT(msg)  do {			\
		ERROR(msg);			\
		__COUT(msg);			\
	} while(false)

#define FATAL_COUT(msg)  do {			\
		FATAL(msg);			\
		__COUT(msg);			\
	} while(false)

#endif
